package com.k8sops.backend.controller;

import com.k8sops.backend.common.ApiResponse;
import com.k8sops.backend.service.DOSKubernetesResourceService;
import io.kubernetes.client.openapi.ApiClient;
import io.kubernetes.client.openapi.ApiException;
import io.kubernetes.client.openapi.apis.AppsV1Api;
import io.kubernetes.client.openapi.apis.CoreV1Api;
import io.kubernetes.client.openapi.apis.NetworkingV1Api;
import io.kubernetes.client.openapi.models.V1ConfigMap;
import io.kubernetes.client.openapi.models.V1Deployment;
import io.kubernetes.client.openapi.models.V1Ingress;
import io.kubernetes.client.openapi.models.V1Service;
import io.kubernetes.client.openapi.models.V1Secret;
import io.kubernetes.client.openapi.models.V1StatefulSet;
import io.kubernetes.client.openapi.models.V1DaemonSet;
import io.kubernetes.client.openapi.models.V1Job;
import io.kubernetes.client.openapi.models.V1CronJob;
import io.kubernetes.client.openapi.models.V1PersistentVolumeClaim;
import io.kubernetes.client.util.ClientBuilder;
import io.kubernetes.client.util.KubeConfig;
import io.kubernetes.client.util.Yaml;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.FileReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Kubernetes部署控制器
 */
@RestController
@RequestMapping("/kubernetes")
@Api(tags = "Kubernetes部署管理")
public class KubernetesDeployController {

    @Resource
    private DOSKubernetesResourceService kubernetesResourceService;

    /**
     * 通过YAML部署应用到Kubernetes
     */
    @PostMapping("/deploy")
    @ApiOperation(value = "通过YAML部署应用到Kubernetes")
    public ApiResponse<?> deployYaml(@RequestBody Map<String, String> request) {
        return kubernetesResourceService.deployYaml(request);
    }

}
